package __二叉树

/*
*
https://leetcode.cn/problems/binary-tree-preorder-traversal/

144. 二叉树的前序遍历
给你二叉树的根节点 root ，返回它节点值的 前序 遍历。

示例 1：
输入：root = [1,null,2,3]
输出：[1,2,3]

示例 2：
输入：root = []
输出：[]

示例 3：
输入：root = [1]
输出：[1]

示例 4：
输入：root = [1,2]
输出：[1,2]

示例 5:
输入：root = [1,null,2]
输出：[1,2]
*/

type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

func preorderTraversal(root *TreeNode) []int {
	var tra func(n *TreeNode)
	var res []int

	tra = func(n *TreeNode) {
		if n == nil {
			return
		}

		res = append(res, n.Val)
		tra(n.Left)
		tra(n.Right)
	}
	tra(root)
	return res
}
